package com.springboot.dxssglxt.controller;

import com.springboot.dxssglxt.entity.Menu;
import com.springboot.dxssglxt.service.IMenuService;
import com.springboot.dxssglxt.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * <p>
 * 菜单管理 前端控制器
 * </p>
 *
 * @author lxp
 * @since 2022-05-10
 */
@Controller
@RequestMapping("/menu")
public class MenuController extends BaseController{

    /**
     * 路由地址
     */
    public String prefix = "/view/admin/menu";

    @Autowired
    IMenuService sysMenuService;

    /**
     * 获取当前用户树结构
     * @return
     */
    @RequestMapping("/getMenuList")
    @ResponseBody
    public Result getMenuList(){
        return Result.reOk("查询成功",sysMenuService.listMenuTree(this.getUserId()));
    }

    /**
     * 进入菜单管理页面
     * @return
     */
    @RequestMapping("/index")
    public String index(){
        return prefix+"/menu-list";
    }

    /**
     * 获取所有的菜单列表
     * @return
     */
    @RequestMapping("/list")
    @ResponseBody
    public List<Menu> list() {
        return sysMenuService.list();
    }

    /**
     * 进入菜单编辑页面
     * @return
     */
    @RequestMapping("/edit")
    public String edit(){
        return prefix+"/edit";
    }

    /**
     * 根据菜单获取菜单详细数据
     * @return
     */
    @RequestMapping("/getMenuById")
    @ResponseBody
    public Result getMenuById(Integer menuid){
        return Result.reOk("查询成功",this.sysMenuService.getMenuById(menuid));
    }

    /**
     * 根据菜单ID修改菜单
     * @return
     */
    @RequestMapping("/update")
    @ResponseBody
    public Result update(Menu menu){
        return this.sysMenuService.update(menu);
    }

    /**
     * 进入新增根目录菜单编辑页面
     * @return
     */
    @RequestMapping("/addparent")
    public String addparent(){
        return prefix+"/addparent";
    }


    /**
     * 进入新增子菜单编辑页面
     * @return
     */
    @RequestMapping("/addchild")
    public String addchild(){
        return prefix+"/addchild";
    }


    /**
     * 新增菜单
     * @return
     */
    @RequestMapping("/add")
    @ResponseBody
    public Result add(Menu menu){
        return this.sysMenuService.add(menu);
    }

    /**
     * 删除菜单
     * @return
     */
    @RequestMapping("/remove")
    @ResponseBody
    public Result remove(Integer menuid){
        return this.sysMenuService.remove(menuid);
    }

}
